package com.tofacebook.proxy.service.impl;


import com.tofacebook.proxy.mapper.BookMapper;
import com.tofacebook.proxy.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class BookServiceImpl implements BookService {

    @Autowired
    private BookMapper bookMapper;

    /**
     * 下面要说的事情是，下面三个调用sql的操作是独享一个事务，也就是在同一个操作里面去执行的
     * 一个sql执行了，使用额一个事务去提交的
     * @param bookId
     * @param userId
     */
    @Override
    public void buyBook(Integer bookId, Integer userId) {
        //查询图书的价格
        Integer price = bookMapper.getPriceByBookId(bookId);
        //更新图书的库存  我们可以观看数据库里面的数据发现数据已经发生变化了，也就是改事务执行sql语句已经commitl
        bookMapper.updateStock(bookId);
        //更新用户的余额  我们去更新数据库中的数据发现该用户手中只有50元不够减80的，那么就会导致事务不能正常提交，sql执行报错了
        bookMapper.updateBalance(userId, price);
    }
}
